package com.iris.live.services.data.models;

import javax.persistence.*;

/**
 * Created by hyp on 2016/12/9.
 */
@Entity
@Table(name = "t_monthly_sale_rpt", schema = "live", catalog = "")
public class TMonthlySaleRptModel {
    private Integer id;
    private String type;
    private String permit;
    private String model;
    private Integer statYear;
    private String statMonth;
    private Double signedWholesaleTa;
    private Double actualWholesale;
    private Double wsAchievement;
    private Double signedRetailTa;
    private Double actualRetailNbi;
    private Double nbiRtAchievement;
    private Double rosRetailTa;
    private Double actualRetailRos;
    private Double rosRtAchievement;
    private Double remainingPreReport;
    private Double salesGuideline;
    private Double lt89DaysStock;
    private Double daysStock90149;
    private Double get150DaysStock;
    private Double closingStock;
    private Double stockLevel;
    private Double agingStockGt90Days;
    private Double agingStockGt90DaysPer;
    private Double newCarExternalSalesRevenue;
    private Double actualGpi;
    private Double actualGpii;
    private Double actualSi;
    private Double actualGpiii;
    private Double gpiPer;
    private Double gpiiPer;
    private Double siPer;
    private Double gpiiiPer;
    private Double budgetSalesDirectExpenses;
    private Double actualSalesDirectExpenses;
    private Double actualDirectExpensesPerCar;
    private Double budgetSalesIndirectExpenses;
    private Double actualSalesIndirectExpenses;
    private Double actualIndirectExpensesPerCar;
    private Double actualTotalExpensesPerCar;
    private Double usedCarAppraisalVolume;
    private Double appraisal;
    private Double usedCarTradeInVolume;
    private Double tradeInPer;
    private Double tradeInCommission;
    private Double tradeInCommissionPerCar;
    private Double afterMarketProductRevenue;
    private Double afterMarketProductRevenuePerCar;
    private Double afterMarketProductGp;
    private Double afterMarketProductGpPer;
    private Double newCarInsurance;
    private Double newCarInsuranceRate;
    private Double newCarInsuranceCommission;
    private Double newCarFinancing;
    private Double financingRate;
    private Double newCarAgility;
    private Double agilityRate;
    private Double financingCommission;
    private Double financingServiceFeeMargin;
    private Double financingServiceFeeMarginPerCar;
    private Double registrationServiceFeeMargin;
    private Double otherServiceFeeMargin;
    private Double totalOtherIncomeMargin;
    private Double salesTransactionGpPer;
    private Double salesDeptHeadcount;
    private Double salesProductibityPerPerson;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Basic
    @Column(name = "TYPE")
    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    @Basic
    @Column(name = "PERMIT")
    public String getPermit() {
        return permit;
    }

    public void setPermit(String permit) {
        this.permit = permit;
    }

    @Basic
    @Column(name = "MODEL")
    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    @Basic
    @Column(name = "STAT_YEAR")
    public Integer getStatYear() {
        return statYear;
    }

    public void setStatYear(Integer statYear) {
        this.statYear = statYear;
    }

    @Basic
    @Column(name = "STAT_MONTH")
    public String getStatMonth() {
        return statMonth;
    }

    public void setStatMonth(String statMonth) {
        this.statMonth = statMonth;
    }

    @Basic
    @Column(name = "SIGNED_WHOLESALE_TA")
    public Double getSignedWholesaleTa() {
        return signedWholesaleTa;
    }

    public void setSignedWholesaleTa(Double signedWholesaleTa) {
        this.signedWholesaleTa = signedWholesaleTa;
    }

    @Basic
    @Column(name = "ACTUAL_WHOLESALE")
    public Double getActualWholesale() {
        return actualWholesale;
    }

    public void setActualWholesale(Double actualWholesale) {
        this.actualWholesale = actualWholesale;
    }

    @Basic
    @Column(name = "WS_ACHIEVEMENT")
    public Double getWsAchievement() {
        return wsAchievement;
    }

    public void setWsAchievement(Double wsAchievement) {
        this.wsAchievement = wsAchievement;
    }

    @Basic
    @Column(name = "SIGNED_RETAIL_TA")
    public Double getSignedRetailTa() {
        return signedRetailTa;
    }

    public void setSignedRetailTa(Double signedRetailTa) {
        this.signedRetailTa = signedRetailTa;
    }

    @Basic
    @Column(name = "ACTUAL_RETAIL_NBI")
    public Double getActualRetailNbi() {
        return actualRetailNbi;
    }

    public void setActualRetailNbi(Double actualRetailNbi) {
        this.actualRetailNbi = actualRetailNbi;
    }

    @Basic
    @Column(name = "NBI_RT_ACHIEVEMENT")
    public Double getNbiRtAchievement() {
        return nbiRtAchievement;
    }

    public void setNbiRtAchievement(Double nbiRtAchievement) {
        this.nbiRtAchievement = nbiRtAchievement;
    }

    @Basic
    @Column(name = "ROS_RETAIL_TA")
    public Double getRosRetailTa() {
        return rosRetailTa;
    }

    public void setRosRetailTa(Double rosRetailTa) {
        this.rosRetailTa = rosRetailTa;
    }

    @Basic
    @Column(name = "ACTUAL_RETAIL_ROS")
    public Double getActualRetailRos() {
        return actualRetailRos;
    }

    public void setActualRetailRos(Double actualRetailRos) {
        this.actualRetailRos = actualRetailRos;
    }

    @Basic
    @Column(name = "ROS_RT_ACHIEVEMENT")
    public Double getRosRtAchievement() {
        return rosRtAchievement;
    }

    public void setRosRtAchievement(Double rosRtAchievement) {
        this.rosRtAchievement = rosRtAchievement;
    }

    @Basic
    @Column(name = "REMAINING_PRE_REPORT")
    public Double getRemainingPreReport() {
        return remainingPreReport;
    }

    public void setRemainingPreReport(Double remainingPreReport) {
        this.remainingPreReport = remainingPreReport;
    }

    @Basic
    @Column(name = "SALES_GUIDELINE")
    public Double getSalesGuideline() {
        return salesGuideline;
    }

    public void setSalesGuideline(Double salesGuideline) {
        this.salesGuideline = salesGuideline;
    }

    @Basic
    @Column(name = "LT_89_DAYS_STOCK")
    public Double getLt89DaysStock() {
        return lt89DaysStock;
    }

    public void setLt89DaysStock(Double lt89DaysStock) {
        this.lt89DaysStock = lt89DaysStock;
    }

    @Basic
    @Column(name = "90_149_DAYS_STOCK")
    public Double getDaysStock90149() {
        return daysStock90149;
    }

    public void setDaysStock90149(Double daysStock90149) {
        this.daysStock90149 = daysStock90149;
    }

    @Basic
    @Column(name = "GET_150_DAYS_STOCK")
    public Double getGet150DaysStock() {
        return get150DaysStock;
    }

    public void setGet150DaysStock(Double get150DaysStock) {
        this.get150DaysStock = get150DaysStock;
    }

    @Basic
    @Column(name = "CLOSING_STOCK")
    public Double getClosingStock() {
        return closingStock;
    }

    public void setClosingStock(Double closingStock) {
        this.closingStock = closingStock;
    }

    @Basic
    @Column(name = "STOCK_LEVEL")
    public Double getStockLevel() {
        return stockLevel;
    }

    public void setStockLevel(Double stockLevel) {
        this.stockLevel = stockLevel;
    }

    @Basic
    @Column(name = "AGING_STOCK_GT_90_DAYS")
    public Double getAgingStockGt90Days() {
        return agingStockGt90Days;
    }

    public void setAgingStockGt90Days(Double agingStockGt90Days) {
        this.agingStockGt90Days = agingStockGt90Days;
    }

    @Basic
    @Column(name = "AGING_STOCK_GT_90_DAYS_PER")
    public Double getAgingStockGt90DaysPer() {
        return agingStockGt90DaysPer;
    }

    public void setAgingStockGt90DaysPer(Double agingStockGt90DaysPer) {
        this.agingStockGt90DaysPer = agingStockGt90DaysPer;
    }

    @Basic
    @Column(name = "NEW_CAR_EXTERNAL_SALES_REVENUE")
    public Double getNewCarExternalSalesRevenue() {
        return newCarExternalSalesRevenue;
    }

    public void setNewCarExternalSalesRevenue(Double newCarExternalSalesRevenue) {
        this.newCarExternalSalesRevenue = newCarExternalSalesRevenue;
    }

    @Basic
    @Column(name = "ACTUAL_GPI")
    public Double getActualGpi() {
        return actualGpi;
    }

    public void setActualGpi(Double actualGpi) {
        this.actualGpi = actualGpi;
    }

    @Basic
    @Column(name = "ACTUAL_GPII")
    public Double getActualGpii() {
        return actualGpii;
    }

    public void setActualGpii(Double actualGpii) {
        this.actualGpii = actualGpii;
    }

    @Basic
    @Column(name = "ACTUAL_SI")
    public Double getActualSi() {
        return actualSi;
    }

    public void setActualSi(Double actualSi) {
        this.actualSi = actualSi;
    }

    @Basic
    @Column(name = "ACTUAL_GPIII")
    public Double getActualGpiii() {
        return actualGpiii;
    }

    public void setActualGpiii(Double actualGpiii) {
        this.actualGpiii = actualGpiii;
    }

    @Basic
    @Column(name = "GPI_PER")
    public Double getGpiPer() {
        return gpiPer;
    }

    public void setGpiPer(Double gpiPer) {
        this.gpiPer = gpiPer;
    }

    @Basic
    @Column(name = "GPII_PER")
    public Double getGpiiPer() {
        return gpiiPer;
    }

    public void setGpiiPer(Double gpiiPer) {
        this.gpiiPer = gpiiPer;
    }

    @Basic
    @Column(name = "SI_PER")
    public Double getSiPer() {
        return siPer;
    }

    public void setSiPer(Double siPer) {
        this.siPer = siPer;
    }

    @Basic
    @Column(name = "GPIII_PER")
    public Double getGpiiiPer() {
        return gpiiiPer;
    }

    public void setGpiiiPer(Double gpiiiPer) {
        this.gpiiiPer = gpiiiPer;
    }

    @Basic
    @Column(name = "BUDGET_SALES_DIRECT_EXPENSES")
    public Double getBudgetSalesDirectExpenses() {
        return budgetSalesDirectExpenses;
    }

    public void setBudgetSalesDirectExpenses(Double budgetSalesDirectExpenses) {
        this.budgetSalesDirectExpenses = budgetSalesDirectExpenses;
    }

    @Basic
    @Column(name = "ACTUAL_SALES_DIRECT_EXPENSES")
    public Double getActualSalesDirectExpenses() {
        return actualSalesDirectExpenses;
    }

    public void setActualSalesDirectExpenses(Double actualSalesDirectExpenses) {
        this.actualSalesDirectExpenses = actualSalesDirectExpenses;
    }

    @Basic
    @Column(name = "ACTUAL_DIRECT_EXPENSES_PER_CAR")
    public Double getActualDirectExpensesPerCar() {
        return actualDirectExpensesPerCar;
    }

    public void setActualDirectExpensesPerCar(Double actualDirectExpensesPerCar) {
        this.actualDirectExpensesPerCar = actualDirectExpensesPerCar;
    }

    @Basic
    @Column(name = "BUDGET_SALES_INDIRECT_EXPENSES")
    public Double getBudgetSalesIndirectExpenses() {
        return budgetSalesIndirectExpenses;
    }

    public void setBudgetSalesIndirectExpenses(Double budgetSalesIndirectExpenses) {
        this.budgetSalesIndirectExpenses = budgetSalesIndirectExpenses;
    }

    @Basic
    @Column(name = "ACTUAL_SALES_INDIRECT_EXPENSES")
    public Double getActualSalesIndirectExpenses() {
        return actualSalesIndirectExpenses;
    }

    public void setActualSalesIndirectExpenses(Double actualSalesIndirectExpenses) {
        this.actualSalesIndirectExpenses = actualSalesIndirectExpenses;
    }

    @Basic
    @Column(name = "ACTUAL_INDIRECT_EXPENSES_PER_CAR")
    public Double getActualIndirectExpensesPerCar() {
        return actualIndirectExpensesPerCar;
    }

    public void setActualIndirectExpensesPerCar(Double actualIndirectExpensesPerCar) {
        this.actualIndirectExpensesPerCar = actualIndirectExpensesPerCar;
    }

    @Basic
    @Column(name = "ACTUAL_TOTAL_EXPENSES_PER_CAR")
    public Double getActualTotalExpensesPerCar() {
        return actualTotalExpensesPerCar;
    }

    public void setActualTotalExpensesPerCar(Double actualTotalExpensesPerCar) {
        this.actualTotalExpensesPerCar = actualTotalExpensesPerCar;
    }

    @Basic
    @Column(name = "USED_CAR_APPRAISAL_VOLUME")
    public Double getUsedCarAppraisalVolume() {
        return usedCarAppraisalVolume;
    }

    public void setUsedCarAppraisalVolume(Double usedCarAppraisalVolume) {
        this.usedCarAppraisalVolume = usedCarAppraisalVolume;
    }

    @Basic
    @Column(name = "APPRAISAL")
    public Double getAppraisal() {
        return appraisal;
    }

    public void setAppraisal(Double appraisal) {
        this.appraisal = appraisal;
    }

    @Basic
    @Column(name = "USED_CAR_TRADE_IN_VOLUME")
    public Double getUsedCarTradeInVolume() {
        return usedCarTradeInVolume;
    }

    public void setUsedCarTradeInVolume(Double usedCarTradeInVolume) {
        this.usedCarTradeInVolume = usedCarTradeInVolume;
    }

    @Basic
    @Column(name = "TRADE_IN_PER")
    public Double getTradeInPer() {
        return tradeInPer;
    }

    public void setTradeInPer(Double tradeInPer) {
        this.tradeInPer = tradeInPer;
    }

    @Basic
    @Column(name = "TRADE_IN_COMMISSION")
    public Double getTradeInCommission() {
        return tradeInCommission;
    }

    public void setTradeInCommission(Double tradeInCommission) {
        this.tradeInCommission = tradeInCommission;
    }

    @Basic
    @Column(name = "TRADE_IN_COMMISSION_PER_CAR")
    public Double getTradeInCommissionPerCar() {
        return tradeInCommissionPerCar;
    }

    public void setTradeInCommissionPerCar(Double tradeInCommissionPerCar) {
        this.tradeInCommissionPerCar = tradeInCommissionPerCar;
    }

    @Basic
    @Column(name = "AFTER_MARKET_PRODUCT_REVENUE")
    public Double getAfterMarketProductRevenue() {
        return afterMarketProductRevenue;
    }

    public void setAfterMarketProductRevenue(Double afterMarketProductRevenue) {
        this.afterMarketProductRevenue = afterMarketProductRevenue;
    }

    @Basic
    @Column(name = "AFTER_MARKET_PRODUCT_REVENUE_PER_CAR")
    public Double getAfterMarketProductRevenuePerCar() {
        return afterMarketProductRevenuePerCar;
    }

    public void setAfterMarketProductRevenuePerCar(Double afterMarketProductRevenuePerCar) {
        this.afterMarketProductRevenuePerCar = afterMarketProductRevenuePerCar;
    }

    @Basic
    @Column(name = "AFTER_MARKET_PRODUCT_GP")
    public Double getAfterMarketProductGp() {
        return afterMarketProductGp;
    }

    public void setAfterMarketProductGp(Double afterMarketProductGp) {
        this.afterMarketProductGp = afterMarketProductGp;
    }

    @Basic
    @Column(name = "AFTER_MARKET_PRODUCT_GP_PER")
    public Double getAfterMarketProductGpPer() {
        return afterMarketProductGpPer;
    }

    public void setAfterMarketProductGpPer(Double afterMarketProductGpPer) {
        this.afterMarketProductGpPer = afterMarketProductGpPer;
    }

    @Basic
    @Column(name = "NEW_CAR_INSURANCE")
    public Double getNewCarInsurance() {
        return newCarInsurance;
    }

    public void setNewCarInsurance(Double newCarInsurance) {
        this.newCarInsurance = newCarInsurance;
    }

    @Basic
    @Column(name = "NEW_CAR_INSURANCE_RATE")
    public Double getNewCarInsuranceRate() {
        return newCarInsuranceRate;
    }

    public void setNewCarInsuranceRate(Double newCarInsuranceRate) {
        this.newCarInsuranceRate = newCarInsuranceRate;
    }

    @Basic
    @Column(name = "NEW_CAR_INSURANCE_COMMISSION")
    public Double getNewCarInsuranceCommission() {
        return newCarInsuranceCommission;
    }

    public void setNewCarInsuranceCommission(Double newCarInsuranceCommission) {
        this.newCarInsuranceCommission = newCarInsuranceCommission;
    }

    @Basic
    @Column(name = "NEW_CAR_FINANCING")
    public Double getNewCarFinancing() {
        return newCarFinancing;
    }

    public void setNewCarFinancing(Double newCarFinancing) {
        this.newCarFinancing = newCarFinancing;
    }

    @Basic
    @Column(name = "FINANCING_RATE")
    public Double getFinancingRate() {
        return financingRate;
    }

    public void setFinancingRate(Double financingRate) {
        this.financingRate = financingRate;
    }

    @Basic
    @Column(name = "NEW_CAR_AGILITY")
    public Double getNewCarAgility() {
        return newCarAgility;
    }

    public void setNewCarAgility(Double newCarAgility) {
        this.newCarAgility = newCarAgility;
    }

    @Basic
    @Column(name = "AGILITY_RATE")
    public Double getAgilityRate() {
        return agilityRate;
    }

    public void setAgilityRate(Double agilityRate) {
        this.agilityRate = agilityRate;
    }

    @Basic
    @Column(name = "FINANCING_COMMISSION")
    public Double getFinancingCommission() {
        return financingCommission;
    }

    public void setFinancingCommission(Double financingCommission) {
        this.financingCommission = financingCommission;
    }

    @Basic
    @Column(name = "FINANCING_SERVICE_FEE_MARGIN")
    public Double getFinancingServiceFeeMargin() {
        return financingServiceFeeMargin;
    }

    public void setFinancingServiceFeeMargin(Double financingServiceFeeMargin) {
        this.financingServiceFeeMargin = financingServiceFeeMargin;
    }

    @Basic
    @Column(name = "FINANCING_SERVICE_FEE_MARGIN_PER_CAR")
    public Double getFinancingServiceFeeMarginPerCar() {
        return financingServiceFeeMarginPerCar;
    }

    public void setFinancingServiceFeeMarginPerCar(Double financingServiceFeeMarginPerCar) {
        this.financingServiceFeeMarginPerCar = financingServiceFeeMarginPerCar;
    }

    @Basic
    @Column(name = "REGISTRATION_SERVICE_FEE_MARGIN")
    public Double getRegistrationServiceFeeMargin() {
        return registrationServiceFeeMargin;
    }

    public void setRegistrationServiceFeeMargin(Double registrationServiceFeeMargin) {
        this.registrationServiceFeeMargin = registrationServiceFeeMargin;
    }

    @Basic
    @Column(name = "OTHER_SERVICE_FEE_MARGIN")
    public Double getOtherServiceFeeMargin() {
        return otherServiceFeeMargin;
    }

    public void setOtherServiceFeeMargin(Double otherServiceFeeMargin) {
        this.otherServiceFeeMargin = otherServiceFeeMargin;
    }

    @Basic
    @Column(name = "TOTAL_OTHER_INCOME_MARGIN")
    public Double getTotalOtherIncomeMargin() {
        return totalOtherIncomeMargin;
    }

    public void setTotalOtherIncomeMargin(Double totalOtherIncomeMargin) {
        this.totalOtherIncomeMargin = totalOtherIncomeMargin;
    }

    @Basic
    @Column(name = "SALES_TRANSACTION_GP_PER")
    public Double getSalesTransactionGpPer() {
        return salesTransactionGpPer;
    }

    public void setSalesTransactionGpPer(Double salesTransactionGpPer) {
        this.salesTransactionGpPer = salesTransactionGpPer;
    }

    @Basic
    @Column(name = "SALES_DEPT_HEADCOUNT")
    public Double getSalesDeptHeadcount() {
        return salesDeptHeadcount;
    }

    public void setSalesDeptHeadcount(Double salesDeptHeadcount) {
        this.salesDeptHeadcount = salesDeptHeadcount;
    }

    @Basic
    @Column(name = "SALES_PRODUCTIBITY_PER_PERSON")
    public Double getSalesProductibityPerPerson() {
        return salesProductibityPerPerson;
    }

    public void setSalesProductibityPerPerson(Double salesProductibityPerPerson) {
        this.salesProductibityPerPerson = salesProductibityPerPerson;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        TMonthlySaleRptModel that = (TMonthlySaleRptModel) o;

        if (id != that.id) return false;
        if (type != null ? !type.equals(that.type) : that.type != null) return false;
        if (permit != null ? !permit.equals(that.permit) : that.permit != null) return false;
        if (model != null ? !model.equals(that.model) : that.model != null) return false;
        if (statYear != null ? !statYear.equals(that.statYear) : that.statYear != null) return false;
        if (statMonth != null ? !statMonth.equals(that.statMonth) : that.statMonth != null) return false;
        if (signedWholesaleTa != null ? !signedWholesaleTa.equals(that.signedWholesaleTa) : that.signedWholesaleTa != null)
            return false;
        if (actualWholesale != null ? !actualWholesale.equals(that.actualWholesale) : that.actualWholesale != null)
            return false;
        if (wsAchievement != null ? !wsAchievement.equals(that.wsAchievement) : that.wsAchievement != null)
            return false;
        if (signedRetailTa != null ? !signedRetailTa.equals(that.signedRetailTa) : that.signedRetailTa != null)
            return false;
        if (actualRetailNbi != null ? !actualRetailNbi.equals(that.actualRetailNbi) : that.actualRetailNbi != null)
            return false;
        if (nbiRtAchievement != null ? !nbiRtAchievement.equals(that.nbiRtAchievement) : that.nbiRtAchievement != null)
            return false;
        if (rosRetailTa != null ? !rosRetailTa.equals(that.rosRetailTa) : that.rosRetailTa != null) return false;
        if (actualRetailRos != null ? !actualRetailRos.equals(that.actualRetailRos) : that.actualRetailRos != null)
            return false;
        if (rosRtAchievement != null ? !rosRtAchievement.equals(that.rosRtAchievement) : that.rosRtAchievement != null)
            return false;
        if (remainingPreReport != null ? !remainingPreReport.equals(that.remainingPreReport) : that.remainingPreReport != null)
            return false;
        if (salesGuideline != null ? !salesGuideline.equals(that.salesGuideline) : that.salesGuideline != null)
            return false;
        if (lt89DaysStock != null ? !lt89DaysStock.equals(that.lt89DaysStock) : that.lt89DaysStock != null)
            return false;
        if (daysStock90149 != null ? !daysStock90149.equals(that.daysStock90149) : that.daysStock90149 != null)
            return false;
        if (get150DaysStock != null ? !get150DaysStock.equals(that.get150DaysStock) : that.get150DaysStock != null)
            return false;
        if (closingStock != null ? !closingStock.equals(that.closingStock) : that.closingStock != null) return false;
        if (stockLevel != null ? !stockLevel.equals(that.stockLevel) : that.stockLevel != null) return false;
        if (agingStockGt90Days != null ? !agingStockGt90Days.equals(that.agingStockGt90Days) : that.agingStockGt90Days != null)
            return false;
        if (agingStockGt90DaysPer != null ? !agingStockGt90DaysPer.equals(that.agingStockGt90DaysPer) : that.agingStockGt90DaysPer != null)
            return false;
        if (newCarExternalSalesRevenue != null ? !newCarExternalSalesRevenue.equals(that.newCarExternalSalesRevenue) : that.newCarExternalSalesRevenue != null)
            return false;
        if (actualGpi != null ? !actualGpi.equals(that.actualGpi) : that.actualGpi != null) return false;
        if (actualGpii != null ? !actualGpii.equals(that.actualGpii) : that.actualGpii != null) return false;
        if (actualSi != null ? !actualSi.equals(that.actualSi) : that.actualSi != null) return false;
        if (actualGpiii != null ? !actualGpiii.equals(that.actualGpiii) : that.actualGpiii != null) return false;
        if (gpiPer != null ? !gpiPer.equals(that.gpiPer) : that.gpiPer != null) return false;
        if (gpiiPer != null ? !gpiiPer.equals(that.gpiiPer) : that.gpiiPer != null) return false;
        if (siPer != null ? !siPer.equals(that.siPer) : that.siPer != null) return false;
        if (gpiiiPer != null ? !gpiiiPer.equals(that.gpiiiPer) : that.gpiiiPer != null) return false;
        if (budgetSalesDirectExpenses != null ? !budgetSalesDirectExpenses.equals(that.budgetSalesDirectExpenses) : that.budgetSalesDirectExpenses != null)
            return false;
        if (actualSalesDirectExpenses != null ? !actualSalesDirectExpenses.equals(that.actualSalesDirectExpenses) : that.actualSalesDirectExpenses != null)
            return false;
        if (actualDirectExpensesPerCar != null ? !actualDirectExpensesPerCar.equals(that.actualDirectExpensesPerCar) : that.actualDirectExpensesPerCar != null)
            return false;
        if (budgetSalesIndirectExpenses != null ? !budgetSalesIndirectExpenses.equals(that.budgetSalesIndirectExpenses) : that.budgetSalesIndirectExpenses != null)
            return false;
        if (actualSalesIndirectExpenses != null ? !actualSalesIndirectExpenses.equals(that.actualSalesIndirectExpenses) : that.actualSalesIndirectExpenses != null)
            return false;
        if (actualIndirectExpensesPerCar != null ? !actualIndirectExpensesPerCar.equals(that.actualIndirectExpensesPerCar) : that.actualIndirectExpensesPerCar != null)
            return false;
        if (actualTotalExpensesPerCar != null ? !actualTotalExpensesPerCar.equals(that.actualTotalExpensesPerCar) : that.actualTotalExpensesPerCar != null)
            return false;
        if (usedCarAppraisalVolume != null ? !usedCarAppraisalVolume.equals(that.usedCarAppraisalVolume) : that.usedCarAppraisalVolume != null)
            return false;
        if (appraisal != null ? !appraisal.equals(that.appraisal) : that.appraisal != null) return false;
        if (usedCarTradeInVolume != null ? !usedCarTradeInVolume.equals(that.usedCarTradeInVolume) : that.usedCarTradeInVolume != null)
            return false;
        if (tradeInPer != null ? !tradeInPer.equals(that.tradeInPer) : that.tradeInPer != null) return false;
        if (tradeInCommission != null ? !tradeInCommission.equals(that.tradeInCommission) : that.tradeInCommission != null)
            return false;
        if (tradeInCommissionPerCar != null ? !tradeInCommissionPerCar.equals(that.tradeInCommissionPerCar) : that.tradeInCommissionPerCar != null)
            return false;
        if (afterMarketProductRevenue != null ? !afterMarketProductRevenue.equals(that.afterMarketProductRevenue) : that.afterMarketProductRevenue != null)
            return false;
        if (afterMarketProductRevenuePerCar != null ? !afterMarketProductRevenuePerCar.equals(that.afterMarketProductRevenuePerCar) : that.afterMarketProductRevenuePerCar != null)
            return false;
        if (afterMarketProductGp != null ? !afterMarketProductGp.equals(that.afterMarketProductGp) : that.afterMarketProductGp != null)
            return false;
        if (afterMarketProductGpPer != null ? !afterMarketProductGpPer.equals(that.afterMarketProductGpPer) : that.afterMarketProductGpPer != null)
            return false;
        if (newCarInsurance != null ? !newCarInsurance.equals(that.newCarInsurance) : that.newCarInsurance != null)
            return false;
        if (newCarInsuranceRate != null ? !newCarInsuranceRate.equals(that.newCarInsuranceRate) : that.newCarInsuranceRate != null)
            return false;
        if (newCarInsuranceCommission != null ? !newCarInsuranceCommission.equals(that.newCarInsuranceCommission) : that.newCarInsuranceCommission != null)
            return false;
        if (newCarFinancing != null ? !newCarFinancing.equals(that.newCarFinancing) : that.newCarFinancing != null)
            return false;
        if (financingRate != null ? !financingRate.equals(that.financingRate) : that.financingRate != null)
            return false;
        if (newCarAgility != null ? !newCarAgility.equals(that.newCarAgility) : that.newCarAgility != null)
            return false;
        if (agilityRate != null ? !agilityRate.equals(that.agilityRate) : that.agilityRate != null) return false;
        if (financingCommission != null ? !financingCommission.equals(that.financingCommission) : that.financingCommission != null)
            return false;
        if (financingServiceFeeMargin != null ? !financingServiceFeeMargin.equals(that.financingServiceFeeMargin) : that.financingServiceFeeMargin != null)
            return false;
        if (financingServiceFeeMarginPerCar != null ? !financingServiceFeeMarginPerCar.equals(that.financingServiceFeeMarginPerCar) : that.financingServiceFeeMarginPerCar != null)
            return false;
        if (registrationServiceFeeMargin != null ? !registrationServiceFeeMargin.equals(that.registrationServiceFeeMargin) : that.registrationServiceFeeMargin != null)
            return false;
        if (otherServiceFeeMargin != null ? !otherServiceFeeMargin.equals(that.otherServiceFeeMargin) : that.otherServiceFeeMargin != null)
            return false;
        if (totalOtherIncomeMargin != null ? !totalOtherIncomeMargin.equals(that.totalOtherIncomeMargin) : that.totalOtherIncomeMargin != null)
            return false;
        if (salesTransactionGpPer != null ? !salesTransactionGpPer.equals(that.salesTransactionGpPer) : that.salesTransactionGpPer != null)
            return false;
        if (salesDeptHeadcount != null ? !salesDeptHeadcount.equals(that.salesDeptHeadcount) : that.salesDeptHeadcount != null)
            return false;
        if (salesProductibityPerPerson != null ? !salesProductibityPerPerson.equals(that.salesProductibityPerPerson) : that.salesProductibityPerPerson != null)
            return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = id;
        result = 31 * result + (type != null ? type.hashCode() : 0);
        result = 31 * result + (permit != null ? permit.hashCode() : 0);
        result = 31 * result + (model != null ? model.hashCode() : 0);
        result = 31 * result + (statYear != null ? statYear.hashCode() : 0);
        result = 31 * result + (statMonth != null ? statMonth.hashCode() : 0);
        result = 31 * result + (signedWholesaleTa != null ? signedWholesaleTa.hashCode() : 0);
        result = 31 * result + (actualWholesale != null ? actualWholesale.hashCode() : 0);
        result = 31 * result + (wsAchievement != null ? wsAchievement.hashCode() : 0);
        result = 31 * result + (signedRetailTa != null ? signedRetailTa.hashCode() : 0);
        result = 31 * result + (actualRetailNbi != null ? actualRetailNbi.hashCode() : 0);
        result = 31 * result + (nbiRtAchievement != null ? nbiRtAchievement.hashCode() : 0);
        result = 31 * result + (rosRetailTa != null ? rosRetailTa.hashCode() : 0);
        result = 31 * result + (actualRetailRos != null ? actualRetailRos.hashCode() : 0);
        result = 31 * result + (rosRtAchievement != null ? rosRtAchievement.hashCode() : 0);
        result = 31 * result + (remainingPreReport != null ? remainingPreReport.hashCode() : 0);
        result = 31 * result + (salesGuideline != null ? salesGuideline.hashCode() : 0);
        result = 31 * result + (lt89DaysStock != null ? lt89DaysStock.hashCode() : 0);
        result = 31 * result + (daysStock90149 != null ? daysStock90149.hashCode() : 0);
        result = 31 * result + (get150DaysStock != null ? get150DaysStock.hashCode() : 0);
        result = 31 * result + (closingStock != null ? closingStock.hashCode() : 0);
        result = 31 * result + (stockLevel != null ? stockLevel.hashCode() : 0);
        result = 31 * result + (agingStockGt90Days != null ? agingStockGt90Days.hashCode() : 0);
        result = 31 * result + (agingStockGt90DaysPer != null ? agingStockGt90DaysPer.hashCode() : 0);
        result = 31 * result + (newCarExternalSalesRevenue != null ? newCarExternalSalesRevenue.hashCode() : 0);
        result = 31 * result + (actualGpi != null ? actualGpi.hashCode() : 0);
        result = 31 * result + (actualGpii != null ? actualGpii.hashCode() : 0);
        result = 31 * result + (actualSi != null ? actualSi.hashCode() : 0);
        result = 31 * result + (actualGpiii != null ? actualGpiii.hashCode() : 0);
        result = 31 * result + (gpiPer != null ? gpiPer.hashCode() : 0);
        result = 31 * result + (gpiiPer != null ? gpiiPer.hashCode() : 0);
        result = 31 * result + (siPer != null ? siPer.hashCode() : 0);
        result = 31 * result + (gpiiiPer != null ? gpiiiPer.hashCode() : 0);
        result = 31 * result + (budgetSalesDirectExpenses != null ? budgetSalesDirectExpenses.hashCode() : 0);
        result = 31 * result + (actualSalesDirectExpenses != null ? actualSalesDirectExpenses.hashCode() : 0);
        result = 31 * result + (actualDirectExpensesPerCar != null ? actualDirectExpensesPerCar.hashCode() : 0);
        result = 31 * result + (budgetSalesIndirectExpenses != null ? budgetSalesIndirectExpenses.hashCode() : 0);
        result = 31 * result + (actualSalesIndirectExpenses != null ? actualSalesIndirectExpenses.hashCode() : 0);
        result = 31 * result + (actualIndirectExpensesPerCar != null ? actualIndirectExpensesPerCar.hashCode() : 0);
        result = 31 * result + (actualTotalExpensesPerCar != null ? actualTotalExpensesPerCar.hashCode() : 0);
        result = 31 * result + (usedCarAppraisalVolume != null ? usedCarAppraisalVolume.hashCode() : 0);
        result = 31 * result + (appraisal != null ? appraisal.hashCode() : 0);
        result = 31 * result + (usedCarTradeInVolume != null ? usedCarTradeInVolume.hashCode() : 0);
        result = 31 * result + (tradeInPer != null ? tradeInPer.hashCode() : 0);
        result = 31 * result + (tradeInCommission != null ? tradeInCommission.hashCode() : 0);
        result = 31 * result + (tradeInCommissionPerCar != null ? tradeInCommissionPerCar.hashCode() : 0);
        result = 31 * result + (afterMarketProductRevenue != null ? afterMarketProductRevenue.hashCode() : 0);
        result = 31 * result + (afterMarketProductRevenuePerCar != null ? afterMarketProductRevenuePerCar.hashCode() : 0);
        result = 31 * result + (afterMarketProductGp != null ? afterMarketProductGp.hashCode() : 0);
        result = 31 * result + (afterMarketProductGpPer != null ? afterMarketProductGpPer.hashCode() : 0);
        result = 31 * result + (newCarInsurance != null ? newCarInsurance.hashCode() : 0);
        result = 31 * result + (newCarInsuranceRate != null ? newCarInsuranceRate.hashCode() : 0);
        result = 31 * result + (newCarInsuranceCommission != null ? newCarInsuranceCommission.hashCode() : 0);
        result = 31 * result + (newCarFinancing != null ? newCarFinancing.hashCode() : 0);
        result = 31 * result + (financingRate != null ? financingRate.hashCode() : 0);
        result = 31 * result + (newCarAgility != null ? newCarAgility.hashCode() : 0);
        result = 31 * result + (agilityRate != null ? agilityRate.hashCode() : 0);
        result = 31 * result + (financingCommission != null ? financingCommission.hashCode() : 0);
        result = 31 * result + (financingServiceFeeMargin != null ? financingServiceFeeMargin.hashCode() : 0);
        result = 31 * result + (financingServiceFeeMarginPerCar != null ? financingServiceFeeMarginPerCar.hashCode() : 0);
        result = 31 * result + (registrationServiceFeeMargin != null ? registrationServiceFeeMargin.hashCode() : 0);
        result = 31 * result + (otherServiceFeeMargin != null ? otherServiceFeeMargin.hashCode() : 0);
        result = 31 * result + (totalOtherIncomeMargin != null ? totalOtherIncomeMargin.hashCode() : 0);
        result = 31 * result + (salesTransactionGpPer != null ? salesTransactionGpPer.hashCode() : 0);
        result = 31 * result + (salesDeptHeadcount != null ? salesDeptHeadcount.hashCode() : 0);
        result = 31 * result + (salesProductibityPerPerson != null ? salesProductibityPerPerson.hashCode() : 0);
        return result;
    }
}
